一图胜千言,先上干货。
感觉图画出来后,就没什么好讲的了。。。。
-
首先,肯定是有一个 HTTP 请求过来(别问我为什么会有一个 HTTP 请求过来。)
-
如果匹配到
DispatcherServlet
的请求映射路径(在 web.xml 中配置,而且一般只有一个),就将请求的信息(包括 URL、HTTP 方法、请求报文、Cookie 等跟请求有关的参数)到HandlerMapping
中去查询,最终会得到一个执行链(包括处理器和处理器拦截器)。 -
DispatcherServlet
就拿着这个东西去找HandlerAdapter
,HandlerAdapter
就会去找到Handler
然后进行初始化和校验工作,然后用统一的接口对各种Handler
进行调用。 -
Handler 处理完成之后,会返回一个 ModelAndView 对象,HandlerAdapter 把这个对象又拿给 DispatcherServlet ,DispatcherServlet 拿到这个东西也看不懂呀,只好把这个东西给 ViewResolver ,请他帮忙看一下。
-
ViewResolver 一看,“哦,这不是那谁嘛。” 就让 DispatcherServlet 去找 View 了,Dispatcher 高兴极了,屁颠屁颠的就去找 View 了。
-
Dispatcher 把 ModelAndView 中的 Model 拆出来,递到 View 的手上,“麻烦您帮我造一个xxx”,View 心想,这小子虽然啥都不会,但是还挺有礼貌的,于是就动手开干了。
-
View 把视图渲染完成就交给 DispatcherServlet 了, DispatcherServlet 感动的鞠了两个躬才走。 Dispatcher 把 作品 交给 用户,这件差事也就算完成了。